package co.com.inversiones.xyz.ltda.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import co.com.inversiones.xyz.ltda.dao.HistoricoDao;
import co.com.inversiones.xyz.ltda.dto.Historico;
import co.com.inversiones.xyz.ltda.exception.DaoException;

public class HistoricoDaoImpl extends HibernateDaoSupport implements
		HistoricoDao {

	/**
	 * Metodo para insertar un nuevo Historico en la base de datos
	 * 
	 * @param historico
	 * @throws DaoException
	 */
	@Override
	public void guardarHistorico(Historico historico) throws DaoException {

		Session sesion = null;

		try {
			sesion = getSession();

			sesion.save(historico);

		} catch (HibernateException e) {

			throw new DaoException("Error Guardando Historico de codigo: "
					+ historico.getIdHistorico(), e);

		}

	}

	/**
	 * Metodo que consulta los Historicos y los devuelve en una lista
	 * 
	 * @return la lista de historicos
	 * @throws DaoException
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<Historico> getHistorico() throws DaoException {

		List<Historico> Historicos = new ArrayList<>();

		Session sesion = null;
		try {
			sesion = getSession();

			Historicos = sesion.createCriteria(Historico.class).list();
		} catch (HibernateException e) {
			throw new DaoException("Error consultado los Historicos", e);
		}
		return Historicos;

	}

}
